package cn.source.zk.mapper;

import cn.source.zk.domain.dto.BaseData2TableDTO;
import cn.source.zk.domain.dto.BaseDataQueryDTO;
import cn.source.zk.domain.dto.DbAllIndicatorsDTO;
import cn.source.zk.domain.entity.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

@Mapper
public interface DbBaseDataMapper {

    /**
     * 根据时间类型查询平均值
     * @param baseDataQueryDTO
     * @return
     */
    List<Map<String, Object>> selectByDateAverage(BaseDataQueryDTO baseDataQueryDTO);

    /**
     * 根据时间类型查询最大值
     * @param baseDataQueryDTO
     * @return
     */
    List<Map<String, Object>> selectByDateMax(BaseDataQueryDTO baseDataQueryDTO);

    /**
     * 根据时间类型查询最小值
     * @param baseDataQueryDTO
     * @return
     */
    List<Map<String, Object>> selectByDateMin(BaseDataQueryDTO baseDataQueryDTO);

    /**
     * 检查设备在baseData表中在近两个小时内是否采集了数据
     * @param
     * @return
     */
    List<BaseData> checkBaseData();

    /**
     * 获取BaseData数据
     * @param baseData2TableDTO
     * @return
     */
    List<DbBaseData> getBaseDataList(BaseData2TableDTO baseData2TableDTO);



    List<Map<String, Object>> getMoments(DbAllIndicatorsDTO dbAllIndicatorsDTO);

    Map<String, Object> selectFullBaseData(@Param("timestamp") Date timestamp);

    List<Map<String, Object>> selectFullHarmonic(@Param("tableName") String tableName, @Param("timestamp") Date timestamp);

    List<DBIhra> getDbIhra(BaseData2TableDTO baseData2TableDTO);

    List<DBIhrb> getDbIhrb(BaseData2TableDTO baseData2TableDTO);

    List<DBIhrc> getDbIhrc(BaseData2TableDTO baseData2TableDTO);

    List<DBIhrja> getDbIhrja(BaseData2TableDTO baseData2TableDTO);

    List<DBIhrjb> getDbIhrjb(BaseData2TableDTO baseData2TableDTO);

    List<DBIhrjc> getDbIhrjc(BaseData2TableDTO baseData2TableDTO);

    List<DBUhra> getDbUhra(BaseData2TableDTO baseData2TableDTO);

    List<DBUhrb> getDbUhrb(BaseData2TableDTO baseData2TableDTO);

    List<DBUhrc> getDbUhrc(BaseData2TableDTO baseData2TableDTO);

    List<DBUhrja> getDbUhrja(BaseData2TableDTO baseData2TableDTO);

    List<DBUhrjb> getDbUhrjb(BaseData2TableDTO baseData2TableDTO);

    List<DBUhrjc> getDbUhrjc(BaseData2TableDTO baseData2TableDTO);
}
